[Java]Unirestで簡単HTTP操作[REST]
Httpライブラリ、Unirest
Unirestとは、lightweightなHttpライブラリです。 以前「unicorn」という名前で開発されていたようですが、先日「Unirest」と名前を変えてリリースされたようです。 シンプルなコードでHttp操作やファイルアップロードができ、Javaのみでなく、PHPやRuby等でも使用することができます。 非常に簡単に使用することができるので、試してみましょう。
環境構築方法
今回使用した動作環境は以下のとおりです。ビルドにMavenを使用するので、インストールしておきましょう。
- OS : MacOS X 10.7.5
- Java : 1.7.0_17
- Maven : 3.0.3
Unirestをインストールして動かす
1.Mavenプロジェクト作成
公式サイトを見ると、Mavenを使用する方法が書いてあります。 Mavenを使用してサンプルプロジェクトを作成し、Unirestをインストールしましょう。(面倒ですが。これ、jarで配布してないんでしょうか?) mvn archetype:createでプロジェクトを作成します。
% mvn archetype:create -DgroupId=com.example -DartifactId=unirest % cd unirest
2.pox.xmlの編集
Unirestを依存ライブラリに追加するため、unirest/pom.xmlを編集します。 Unirest用repositoryの追加、Unirest(と、それに付随する各種jar)を追加してください。
・ ・ <repositories> <repository> <id>mashape-releases</id> <url>http://maven.mashape.com/releases</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.mashape.unirest</groupId> <artifactId>unirest</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.2.3</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.2.3</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20090211</version> </dependency> </dependencies> ・ ・
pom.xmlが編集できたら、ライブラリをインストールしましょう。 このあとJavaファイルを編集しますが、Eclipseを使用する人は、eclipseコマンドでプロジェクトをEclipse化しましょう。
% mvn install % mvn eclipse:eclipse //Eclipseを使いたい人。これやったらEclipseでインポートしてください
3.プログラムの記述
sample/src/main/java/com/example/App.javaでUnirestを使用してみましょう。 httpbin.org(HTTPクライアントテストサービス)に対してアクセスし、結果をjsonで取得しています。
package com.example; import java.util.Map; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.JsonNode; import com.mashape.unirest.http.Unirest; import com.mashape.unirest.http.async.Callback; public class App { public static void main(String[] args) { HttpResponse<JsonNode> res1 = Unirest.get("http://httpbin.org/user-agent").header("accept", "application/json").asJson(); System.out.println(res1.getBody()); } }
実行してみるとボディ内容が表示されます。json形式で簡単に習得できるのがわかります。 また、POSTしたい場合はpostメソッドを使うだけです。パラメータを渡したい場合、fieldメソッドをチェーンしてkey-value形式で渡します。
HttpResponse<JsonNode> postRes = Unirest.post("http://httpbin.org/post") .header("accept", "application/json") .field("parameter", "value") .field("foo", "bar") .asJson(); System.out.println(postRes.getBody());
非同期で実行することもできます。その場合、Callbackインターフェイスを渡してcomletedメソッドを実装します。
Thread thread = Unirest.post("http://httpbin.org/post") .header("accept", "application/json") .field("param1", "value1") .field("param2", "value2") .asJson(new Callback<JsonNode>() { public void completed(HttpResponse<JsonNode> response) { int code = response.getCode(); Map<String, String> headers = response.getHeaders(); JsonNode body = response.getBody(); System.out.println(code); System.out.println(headers); System.out.println(body); } });
まとめ
とても簡単にHttpリクエストを送り、json形式で受け取ることができました。 いろいろな場面で役に立ちそうです。
参考サイトなど
- 公式(Java): http://unirest.io/#java